package com.xw.Utils;

import java.util.Properties;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

import com.alibaba.fastjson.JSONObject;

/**
 * 字符串处理帮助类
 * @author YangJianquan
 */
public final class StrUtil {
	
	/**
	 * 截取<>中间的字符串，用于获取邮件收件人
	 * @param str 待处理的字符串
	 * @return
	 */
	public static String getByLessThan(String str){
		String ret = "";
		if (StringUtils.isEmpty(str)) {
			return ret;
		}
		int start = str.lastIndexOf('<');
		int end = str.lastIndexOf('>');
		if (start!= -1 && end != -1) {
			ret = str.substring(start+1, end);
			return ret;
		}
		return str;
	}
	
	/**
	 * 判断字符串是否有空
	 * @param strs 
	 * @return
	 */
	public static boolean hasEmpty(String...strs){
		if (null==strs) {
			return true;
		}else{
			for (String string : strs) {
				if (StringUtils.isEmpty(string)) {
					return true;
				}
			}
		}
		return false;
	}
	
	public static String uuid(){
		UUID uuid = UUID.randomUUID();
		return uuid.toString();
	}
	
	/**
	 * 描述：截取路径中.后面的文件类型
	 * @author 杨建全
	 * @date 2017年6月7日
	 * @param src
	 * @return
	 */
	public static String getFileType(String src){
		String ret = "";
		if (StringUtils.isNotEmpty(src) && src.lastIndexOf(".")!= -1) {
			return src.substring(src.lastIndexOf(".")+1,src.length());
		}
		return ret;
	}
	
	
	/**
	 * 描述：随机生成一个文件夹名称
	 * @author 杨建全
	 * @date 2017年6月7日
	 * @return
	 */
	public static String uuidWithodHyphen() {
		return uuid().replaceAll("-", "");
	}
	
	
	/**
	 * 描述：email校验
	 * @author 杨建全
	 * @date 2017年6月30日
	 * @param emaile
	 * @return
	 */
	public static boolean checkEmaile(String emaile){
        String RULE_EMAIL = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
        //正则表达式的模式
        Pattern p = Pattern.compile(RULE_EMAIL);
        //正则表达式的匹配器
        Matcher m = p.matcher(emaile);
        //进行正则匹配
        return m.matches();
    }
	
	/**
	 * 将json对象转成prop对象
	 * @param connectConf
	 * @return
	 */
	public static Properties jsonToPropertis(JSONObject connectConf) {
		Properties prop = new Properties();
		for (String key : connectConf.keySet()) {
			String value = connectConf.getString(key);
			prop.put(key, value);
		}
		return prop;
	}
	
	public static boolean isEmpty(String str){
		return str == null || str.isEmpty();
	}
	
	public static int matches(String content, String key){
		int i = 0;
		while(true){
			int index = content.indexOf(key);
			if(index == -1){
				break;
			}else{
				content = content.substring(index+key.length());
				i++;
			}
		}
		return i;
	}
	
}
